# -*- coding=utf-8 -*-

"""
数字又分为 int[整数]、float[浮点]、bool[布尔，代表真或假，是或否]、complex[复数]

"""

from math import sqrt

"""
假设一个学生
"""

# 给这个学生一个手机号
tel = 10086

# 给学生的数学成绩打95.5分
math_score = 95.5

# 现在学生毕业了没有，没有
is_graduation = False

# 学生的数据成绩及格了没有，及格了
math_pass = True

print(tel)
print(math_score)
print(is_graduation)
print(math_pass)
print(tel, math_score, is_graduation, math_pass)
print("-" * 10)
"""
10086
95.5
False
True
10086 95.5 False True
"""

print(type(tel))
print(type(math_score))
print(type(is_graduation))
print(type(math_pass))
print("-" * 10)
"""
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'bool'>
"""

"""
加减乘除
跟数学是一样，计算顺序严格符合正常思维，先算(), 整数加减乘整数，得出的只能是整数，相除除不尽为小数 
"""
# 这个学生一顿饭吃一碗米饭
eat_food_num = 1

# 一天三顿，那要吃多少
eat_food_day = eat_food_num * 3
print(eat_food_day)  # 3

# 但是某一天中午太饿了，吃了两碗，那今天吃了多少
# 早上一碗，中午两碗，晚上一碗

# 第一种算法
eat_food_hungry_day = 1 + 2 + 1
print(eat_food_hungry_day)  # 4
# 第二种算法
eat_food_hungry_day = eat_food_num * 3 + 1
print(eat_food_hungry_day)  # 4

# 正常情况下，一天三碗，但是又某一天，生病了，睡着了，晚饭没吃，那么这天就少吃一顿
# eat_food_day，上面已经算过了，正常情况下一天吃三碗，看第58行，eat_food_day此时已经 等于3了
eat_food_sick_day = eat_food_day - 1
print(eat_food_sick_day)  # 2

# 此时，这一天也就吃了两碗饭，幸好，没到12点，他又醒了，现在很饿，但是又没胃口，勉强吃了 半碗
eat_food_sick_day = eat_food_sick_day + 0.5
print(eat_food_sick_day)  # 2.5

# 生病这一天，早上一碗，中午一碗，后来又吃了半碗，一共吃了2.5碗，平均一顿吃了多少
eat_food_sick_day_avg = eat_food_sick_day / 3
print(eat_food_sick_day_avg)  # 0.8333333333333334

# 但是，这个数字太长了，总不能说，我今天吃了 0.8333333333333334 碗，写个日记都是凑字数，我们给他四射五入
# round() ,第一个参数是数字，第二个是保留多少个小数位，2就是 x.xx; 3就是x.xxx
eat_food_sick_day_avg_round = round(eat_food_sick_day_avg, 2)  #
print(eat_food_sick_day_avg_round)  # 0.83

# 现在有人问这个学生，你数学考了多少分，但是这个学生觉得95.5不好听，就把自己的成绩四舍五入改了一下
math_score = round(math_score)
print(round(math_score))  # 此时成绩就改成96了

"""
其他数学计算
绝对值、正数、负数、取模[求余]、取商、幂、最大值、最小值、平方、开方、随机数
"""

"""



"""
num1 = 5
num2 = -5

# 绝对值
abs(num1)
abs(num2)

# 正数  + 、负数 -
print(+ num1)  # 0 + num1 = 5
print(+ num2)  # 0 + num2 = -5

print(- num1)  # 0 - num1 = -5
print(- num2)  # 0 - num2 = 5

# 取模，求余数
print(num1 % 2)  # 5/2 等于2，余1

# 取商
print(num1 // 2)  # 5/2 等于2

# 幂，次方
# 如2的3次方 2*2*2
print(2 ** 3)
# 2的5次方 2*2*2*2*2
print(2 ** 5)

# 比如说，三个人的分数分别为 84，65，95
# 最大值
print(max(84, 65, 95))
# 最小值
print(min(84, 65, 95))

# 开方
# 第一种 sqrt函数存在 与math包
print(sqrt(100))
# 第二种 python 内置函数 pow
print(pow(100, 0.5))

"""
总结

1、在python 中 number 大体分为 int,float,bool,complex 四种类型
2、对于 int、float 进行数学计算时也会按照人类常规思想，先乘除后加减，先括号
3、int(整数)与float(小数)进行计算时，结果必定时float
4、bool 显示为True、False,但是在底层也是指定的数字，True : 1、False : 0

常用运算符号
1、%  : 求余[取模]   5 % 2 = 1
2、// : 求商        5 // 2 = 2
3、** : 幂          5 ** 2 = 25
4、+  ： 加         5 + 2 =7
5、-  ： 减         5 - 2 = 5
6、*  ： 乘         5 * 2 = 10
7、/  ： 除         5 / 2 = 2.5


"""